約 5,030,570 件
https://w.atwiki.jp/nina_a/pages/55.html
ドラッグ・アンド・ドロップ(D D) このページを編集 概要 D Dとは,画面上のある要素をつかみ,移動させる方法のこと.本ページではウィンドウズからWPFアプリケーション,WPFアプリケーションからウィンドウズへのD Dについては解説せず,WPFアプリケーション内で完結するD Dについて説明する. D Dは,ドラッグされる物とドロップされる物の2つを設定すれば実現可能. ドラッグされる物 WPFではDragDropクラス( MSDN )の静的メソッドDoDragDropを呼び出すだけで良い.XAMLは後述. +ドラッグの開始 private void OnMouseDown(object s, System.Windows.Input.MouseButtonEventArgs e){ var sender = s as TextBlock; DragDrop.DoDragDrop( sender, // ドラッグされる物 sender.Text.Substring(sender.Text.Length-1), // 渡すデータ DragDropEffects.Copy); // D Dで許可するオペレーション} 普通は右クリックとかではドラッグは開始しないのでマウスの状態をチェックする. +左クリックによるドラッグの開始 private void OnMouseDown(object s, System.Windows.Input.MouseButtonEventArgs e){ var sender = s as TextBlock; if( e.LeftButton == MouseButtonState.Pressed e.RightButton == MouseButtonState.Released e.MiddleButton == MouseButtonState.Released ) DragDrop.DoDragDrop( sender, // ドラッグされる物 sender.Text.Substring(sender.Text.Length-1), // 渡すデータ DragDropEffects.Copy); // D Dで許可するオペレーション} ドロップされる物 XAMLでドロップを許可すればよい.Dropイベントが発生する.XAMLは後述. +ドロップの受け入れ private void OnDrop(object s, System.Windows.DragEventArgs e){ MessageBox.Show(e.Data.GetData(typeof(string)) + " is dropped.", "Dropped!");} XAML +ドラッグ・アンド・ドロップのサンプル Window xmlns="http //schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns x="http //schemas.microsoft.com/winfx/2006/xaml" x Class="WpfApplication1.MainWindow" x Name="Window" Title="MainWindow" Width="640" Height="480" Grid x Name="LayoutRoot" Grid.ColumnDefinitions ColumnDefinition Width="*"/ ColumnDefinition Width="*"/ ColumnDefinition Width="*"/ /Grid.ColumnDefinitions TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" MouseDown="OnMouseDown" Grab me! 1 /TextBlock TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" MouseDown="OnMouseDown" Grid.Column="1" Grab me! 2 /TextBlock TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" AllowDrop="True" Grid.Column="2" Drop="OnDrop" Drop to me! /TextBlock /Grid /Window ユーザへのフィードバック ドロップ先がドロップを受け入れることができるか,あるいは今ドロップした場合どの操作が行われるかをユーザに示すためにはDragEnterおよびDragOverイベントでEffectsを指定する. +ドロップエフェクトの指定サンプル // 関数名はDragOverだが,DragEnterもこれを呼び出しても動くprivate void OnDragOver(object sender, System.Windows.DragEventArgs e){ // ドロップされるデータがStringでなければ受け入れない if (!e.Data.GetDataPresent(typeof(System.String))) { e.Effects = DragDropEffects.None; return; } // ドロップされるデータ(String)がintに変換できなければ受け入れない var str = e.Data.GetData(typeof(string)) as string; int tmp; if (int.TryParse(str, out tmp)) e.Effects = DragDropEffects.Copy; else e.Effects = DragDropEffects.None;} より適当なD D 上記のコードでは,以下のように書き換えるとD Dできなくなる. +ボタンのドラッグ・アンド・ドロップ Button VerticalAlignment="Center" HorizontalAlignment="Center" MouseDown="OnMouseDown" Click="OnClick" Grab me! 1 /Button Button VerticalAlignment="Center" HorizontalAlignment="Center" MouseDown="OnMouseDown" Click="OnClick" Grid.Column="1" Grab me! 2 /Button TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" AllowDrop="True" Grid.Column="2" Drop="OnDrop" Drop to me! /TextBlock private void OnClick(object s, System.Windows.RoutedEventArgs e){ var sender = s as Button; var text = sender.Content as string; MessageBox.Show(text.Substring(text.Length-1) + " is clicked.", "Clicked!");} 少し調べるとOnMouseDown関数が呼び出されていないことが分かる(試しにMassageBox.ShowをOnMouseDownに追加してみると良い).これはButtonがClickイベントを実装しているため( 詳しくはここ ).このような場合はPreviewMouseDownを使う. +PreviewMouseDownによるドラッグアンドドロップ Button VerticalAlignment="Center" HorizontalAlignment="Center" MouseDown="OnMouseDown" Click="OnClick" Grab me! 1 /Button Button VerticalAlignment="Center" HorizontalAlignment="Center" PreviewMouseDown="OnMouseDown" Click="OnClick" Grid.Column="1" Grab me! 2 /Button TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" AllowDrop="True" Grid.Column="2" Drop="OnDrop" Drop to me! /TextBlock 上のコードでは,1つめのボタンはドラッグできないが,2つめのボタンはできる.ただし,2つめのボタンはClickイベントが発生しない.原因は勿論PreviewMouseDownでD Dを開始しているため. これへの対応としては,クリックされたまま一定距離を移動したらドラッグ開始という風にすれば良い. +PreviewMouseDownによるドラッグアンドドロップ2 Button VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="1" PreviewMouseMove="OnMouseMove" PreviewMouseDown="OnMouseDown" Click="OnClick" Grab me! 2 /Button private Point start;private Button downed; private void OnMouseDown(object s, System.Windows.Input.MouseButtonEventArgs e){ downed = s as Button; start = e.GetPosition(downed);} private void OnMouseMove(object s, System.Windows.Input.MouseEventArgs e){ var sender = (Button)s; if (downed != null downed == sender e.LeftButton == MouseButtonState.Pressed) { var current = e.GetPosition(sender); if (Math.Abs(current.X - start.X) SystemParameters.MinimumHorizontalDragDistance || Math.Abs(current.Y - start.Y) SystemParameters.MinimumVerticalDragDistance) { downed = null; DragDrop.DoDragDrop(sender, sender.Content, DragDropEffects.Copy); } }} private void OnDrop(object s, System.Windows.DragEventArgs e){ MessageBox.Show(e.Data.GetData(typeof(string)) + " is dropped.", "Dropped!");} これでクリックもドラッグもできるボタンができた. パネルなどのドラッグ・アンド・ドロップ パネルを丸ごとD Dしたい場合には,背景にTransparent(もしくは何らかの色など)を指定しておくこと.指定しない場合は,パネルの子要素の位置でクリックした場合のみD Dが開始され,それ以外の子要素がない場所でドラッグしようとしてもMouseDownイベントハンドラが呼び出されない. カテゴリ:WPF 名前
https://w.atwiki.jp/ryouga0415/pages/85.html
更新日:2010-06-02 今回のサンプルプログラムの構造 ソリューション |- MixAutoList … リスト画面1用プロジェクト |- AutoList.xaml |- MixAutoListTest … MixAutoListのNUnitテストプロジェクト |- MixAutoListTest.cs |- MixList … リスト画面2用プロジェクト |- List.xaml |- MixListTest … MixListのNUnitテストプロジェクト |- MixListTest.cs |- MixRaku … メイン画面用プロジェクト |- Raku.xaml |- MixRakuTest … MixRakuのNUnitテストプロジェクト |- MixRakuTest.cs |- MixUser … ユーザ情報登録画面用プロジェクト |- MixUser.xaml |- MixUserTest … MixUserのNUnitテストプロジェクト |- MixUserTest.cs 各プロジェクト単位でUI画面が発生するため、1つのプロジェクトに対して1つのNUnit用プロジェクトを作成する。 Testプロジェクトは、クラスライブラリで作成、UI系プロジェクトは、WPFプロジェクトで作成する。 Blendを起動し、画面をデザインする。 各コントロールの背景色も設定でき、リアルタイムにXAML(ザムル)ビューアで確認ができる。 NUnitプロジェクトは、以下を参照設定に追加する必要があります。nunit.framework UIAutomationClient UIAutomationTypes NUnit用のテストプロジェクトを読み込み、RUNで実行する。 ※予め、NUnitをインストールする必要があります。
https://w.atwiki.jp/opengl/pages/28.html
2Dと言っても、今では3Dを平面的に扱って表示しています。 その方が高速だったからです。 そして、なんと言っても2Dを3Dの一部として扱うと、移動、回転、 拡大縮小が自由自在に行える利点もあります。 そこで2Dと3Dを同時に描画しようとした場合、工夫が必要になります。 上手く切り替えてやらないと3Dも2Dも同じように移動、回転、拡大縮小 してしまいます。 それには、まず3Dを描画してから glPushMatrix(); で階層を降ります。 そして2Dを描画して glPopMatrix(); で階層を上がります。 これを繰り返します。 つまり3Dを親階層として2Dを子階層とします。 なので、子階層で何をしようが、親階層には影響が無いのです。 ファイル main.cpp main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include GL/freeglut/freeglut.h #include math.h #define WIDTH 320 #define HEIGHT 240 #define Pai 3.1415926 float anglex=0.0f; float angley=0.0f; float anglez=0.0f; //2D描画用 void view2D() { glMatrixMode(GL_PROJECTION);// 射影変換行列設定 glPushMatrix();// 現在の射影変換行列を保存 glOrtho(0, WIDTH, HEIGHT, 0, -1, 1);// 正射影変換設定 glMatrixMode(GL_MODELVIEW);// モデルビュー変換行列設定 glPushMatrix();// 現在のモデルビュー行列を保存 glLoadIdentity();// 単位行列を設定 } //3D描画用 void view3D() { glMatrixMode(GL_PROJECTION);// 射影変換行列設定 glPopMatrix();// 射影変換行列を復元 glMatrixMode(GL_MODELVIEW);// モデルビュー変換行列設定 glPopMatrix();// モデルビュー行列を復元 glLoadIdentity();// 単位行列を設定 } void Circle2DFill(float radius,int x,int y) { for (float th1 = 0.0; th1 = 360.0; th1 = th1 + 1.0) { float th2 = th1 + 10.0; float th1_rad = th1 / 180.0 * Pai; float th2_rad = th2 / 180.0 * Pai; float x1 = radius * cos(th1_rad); float y1 = radius * sin(th1_rad); float x2 = radius * cos(th2_rad); float y2 = radius * sin(th2_rad); glBegin(GL_TRIANGLES); glVertex2f( x, y ); glVertex2f( x1+x, y1+y ); glVertex2f( x2+x, y2+y ); glEnd(); } } void DrawTriangle() { glBegin(GL_TRIANGLES); glColor4f(1.0, 0.0, 0.0, 1.0f); glVertex3f(50 , 30, 0); glColor4f(0.0, 1.0, 0.0, 1.0f); glVertex3f(10 , 100, 0); glColor4f(0.0, 0.0, 1.0, 1.0f); glVertex3f(90 , 100, 0); glEnd(); } void DrawQuadrangle() { glBegin(GL_QUADS); glColor4f(1.0, 1.0, 0.0, 1.0f); glVertex3f(100 , 180, 0); glColor4f(1.0, 1.0, 1.0, 1.0f); glVertex3f(200 , 180, 0); glColor4f(0.0, 1.0, 1.0, 1.0f); glVertex3f(200 , 220, 0); glColor4f(0.0, 0.0, 0.0, 1.0f); glVertex3f(100 , 220, 0); glEnd(); } void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //3D切り替え view3D(); glRotated(angley, 0.0, 1.0, 0.0); glRotated(anglex, 1.0, 0.0, 0.0); glRotated(anglez, 0.0, 0.0, 1.0); //頂点位置設定用 glOrtho(0.0, WIDTH, HEIGHT, 0.0, -1.0, 1.0); DrawTriangle(); DrawQuadrangle(); //2D切り替え view2D(); glColor4f(0.0f, 0.0f, 1.0f, 1.0f); Circle2DFill(50.0f,250,100); glutSwapBuffers(); } void idle(void) { angley+=0.05f; anglex+=0.0025f; anglez+=0.03f; Sleep(1); glutPostRedisplay(); } void Init(){ glClearColor(0.8, 0.8, 0.8, 1.0); glOrtho(0, WIDTH, HEIGHT, 0, -1, 1); } int main(int argc, char *argv[]) { glutInitWindowPosition(100, 100); glutInitWindowSize(WIDTH, HEIGHT); glutInit( argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutCreateWindow( 2Dと3Dの切り替え ); glutDisplayFunc(display); glutIdleFunc(idle); Init(); glutMainLoop(); return 0; }
https://w.atwiki.jp/bdueloflegendwikidol/pages/323.html
切り替え 相手のデッキに合わせてデッキを変えること。 例として、 速攻デッキを見たらルシファーデッキから中堅デッキへ切り替える などのこと。
https://w.atwiki.jp/atachi/pages/69.html
WPFToolkitで開発中のコンポーネントです。 まだ開発段階のため、WPFToolkitのライブラリ(WPFTools.DLL)にも含まれていません。 http //social.msdn.microsoft.com/Forums/ja-JP/wpfja/thread/9abc50e7-2104-4d80-8933-9e5f15545f2f http //social.msdn.microsoft.com/Forums/en-US/wpf/thread/215ac129-2b3e-45a3-833a-3990b6f9f0fd スクロールさせる? http //www.eggheadcafe.com/tutorials/aspnet/0939d60c-8e17-4a27-b898-1fc772d2d6f6/scrolling-in-wpf-toolkits-column-chart.aspx 線と丸の色 chartingToolkit LineSeries chartingToolkit LineSeries.DataPointStyle Style TargetType="{x Type chartingToolkit LineDataPoint}" Setter Property="Visibility" Value="Collapsed"/ Setter Property="Background" Value="Purple"/ /Style /chartingToolkit LineSeries.DataPointStyle /chartingToolkit LineSeries
https://w.atwiki.jp/atachi/pages/37.html
入力値のバリデーション 複数行の入力 入力文字列の検証に正規表現を使用する テキストボックスとIMEとの関係 入力値のバリデーション テキストボックスに入力されている値が正しい値であるかを判断し、正しくない場合にエラー表示を行います。 入力値のバリデーション 複数行の入力 AcceptsReturn属性をtrueにセットすると、ユーザーからのEnterキーの入力を受け付けるようになります。TextWrapping属性やVerticalScrollBarVisibility属性、HorizontalScrollBarVisibility属性との併用を検討します。 TextWrapping属性は文字列の自動改行を行うかどうかを設定するフラグです。 VerticalScrollBarVisibility属性・HorizontalScrollBarVisibility属性はテキストボックスのスクロールバーを表示するかしないかを指定するものです。 入力文字列の検証に正規表現を使用する CodeProjectにそれらしき記事の投稿がありました。 http //www.codeproject.com/KB/WPF/RegexValidationInWPF.aspx テキストボックスとIMEとの関係 WPFのTextBoxにはIMEとの関係で様々な問題が今でも残っています。 TextBox で添付ビヘイビアを使ったところ、IME と干渉するのか重大エラーが!IMEを使っている場合のみに発生するという厄介な問題。 IMEで変換状態中でもTextBox.TextChangedが発生するイベントの動作的には正しいが、例えばエンターキーやスペースキーの入力を検出したい場合に、それが変換中のEnterなのかそうでないのかをプログラマがロジックで判断しなければならない。
https://w.atwiki.jp/sapmania_bi70_delta/pages/27.html
ビジネスコンテンツをBIから有効化した際にソースシステム側でデータソースを有効化できるようになった。但し、下記の前提条件がある。 ソースシステムのPlug-inのバージョンが2005.1以降であること ユーザが実行時にチェックされる権限オブジェクト「S_RO_BCTRA」を有していること(ロール「SAP_RO_BCTRA」をユーザに割り当てても良い) 名前 コメント
https://w.atwiki.jp/c-note/pages/46.html
データソースを利用したデータベースへのアクセス データソースを利用して、データベースの中身を表示できるようにしてみます。 この前に データベースへ接続するクラスの作成 ウェブサービスの作成 あたりができている必要があるでしょう。 データソースを利用したデータベースへのアクセス1.データソースを画面レイアウトへドラッグ&ドロップ 2.コントロールのレイアウト調整 3.ビルド 4.実行 5.確認 1.データソースを画面レイアウトへドラッグ&ドロップ データソースのウィンドウから表示したいテーブルを画面レイアウトのXAMLへドラッグ&ドロップします。 データソースが表示されていない場合は、メニューバーより「データ」 「データソースの表示」で表示されます。 2.コントロールのレイアウト調整 適当に広げて調整しましょう。 3.ビルド ビルドします。 4.実行 確認ダイアログが出ると思いますが、「OK」をクリック。 5.確認 ウィンドウが表示されました。 Out of Browserなのでブラウザは表示されません。 データベースにデータが入っていれば、このようにデータがきちんと表示されることが確認できます。
https://w.atwiki.jp/www-iris/pages/1010.html
【P.A名】 ベータソード 【読み方】 べーたそーど 【種類】 プログラムアドバンス 【発動方法】 ソード・ワイドソード・ロングソードを同チップコードで順に3枚選ぶ 【派生P.A】 ベータ系、シグマソード、ドリームソード系 【登場作品】 『1』 【英語名】 B-Sword(Beta Sword) 【詳細】 ソード・ワイドソード・ロングソードをそれぞれ順に2回ずつ使うことができるプログラムアドバンス。 『1』以外を先にプレイした人にとっては、この組み合わせでドリームソードが発動できないことに戸惑うかもしれない。 アニメ版では「伝説の必殺技」として炎山や熱斗が使用。 右手に装着したソードと左手に装着したワイドソードを一つに合わせる事によって生じる巨大な光剣を振り下ろし、衝撃波で攻撃するという演出になっていた。 衝撃波を放てばそれっきりの技というわけでもないようで、22話でロックマンとブルースは衝撃波を放った後も、余波の中でお互いにベータソードを交えて戦っていた。 使いこなすにはかなりの力量が求められ、熱斗は特訓で習得に時間を費やしたが、後にガッツマンをオペレートさせてもらった大山チサオが使いこなすシーンもあった。 『AXESS』以降は、ドリームソードへと名前が変更されたが、演出はベータソード同様で名前以外の変更点は見当たらない。
https://w.atwiki.jp/carenasgard/pages/25.html
後でWindows用とWPF用に書き換えるかもしれませんが、 今のところは共通としてダンプ。 Form上に動的コントロール配置(その1)、(その2) 自主学習用(microsoft) 窓の親子宣言 tech serialize,deserialize XML読み出し MemoryStream,その2